
Derniers tests et previews


TEST Split Fiction : que vaut la version Switch 2 ?

TEST Caméra pour Nintendo Switch 2 : un accessoire indispensable ?

TEST Death Stranding 2: On The Beach, une expérience poignante entre solitude et action

TEST Switch 2 : notre avis sur la pochette de transport officielle de Nintendo
Dernières actualités

BON PLAN : Sonic X Shadow Generations est à prix réduit, il va falloir faire vite !

BON PLAN : Dragon Age: The Veilguard, de belles promotions sur le dernier RPG de BioWare

Drop Dead: The Cabin confirmé sur PC avec coop à 4 joueurs et crossplay VR

Street Fighter, le film a trouvé son M. Bison

keys firmware
Numéro de série de la Wii : LEH11177292 - 6
Firmware de la Wii avant le brick : 4.2
Jeu qui a brické la Wii : super mario bros
Bootmii installé? (Oui? non? En boot2? en IOS?) - homebrow channel et le reste je ne sais plus
Sauvegarde de NAND (fichier nand.bin et keys.bin) faite? : m'en rappel pas
Priiloader installé? Si oui, fonctionne-t-il encore? : m'en rappel pas non plus
Donnes nous quelques infos :
Numéro de série de la Wii :
Firmware de la Wii avant le brick :
Jeu qui a brické la Wii :
Bootmii installé? (Oui? non? En boot2? en IOS?)
Sauvegarde de NAND (fichier nand.bin et keys.bin) faite?
Priiloader installé? Si oui, fonctionne-t-il encore?
Regarde mon tutoriel en signature, il explique comment débricker la Wii avec la méthode du SaveMiiFrii, mais avant de te lancer dedans, réponds à mes questions.
ca devrai en calmer plus d'un là..
Passons donc au vif du sujet : la découverte des Masterkeys de la PSP (kirk keys) par Mathieulh. Sans détailler autant que notre ami développeur, il faut savoir que c'est le hack récent de la PlayStation 3 (découverte et mise en ligne de la Masterkeys de la console, merci de vous rendre sur PS3GEN pour plus d'informations) qui a permis la découverte de ces clés.
Contrairement à la Masterkeys de la PlayStation 3, elles ne permettent que de signer du contenu User (homebrew, émulateur, etc.) afin que celui-ci se lance en firmware officiel sans avoir besoin de passer par le Half Byte Loader, un HEn ou un custom firmware. Ces clés ne sont pas suffisantes pour lancer du contenu Kernel (ISO Loader, Downgrader, etc.). Cependant, il est possible d'associer les clés à une faille kernel (comme celle utilisée par Total_Noob pour le 6.20 TN-B) afin de prendre un contrôle total de la PSP. Mathieulh tient ensuite à préciser que la découverte des clés ne signifie pas qu'il revient sur la scène PSP qu'il a quittée, il y a quelques années déjà.
reste a voir ce que associer ces clés avec une faille kernel peuvent faire.
Pas la private key ecdsa (pour faire l'equivalent du make_npdrm du sdk de sony). Si toutes les cles avaient ete trouves ca ferait bien longtemps qu'on pourrait signer les pkg des applications.
Y a moyen:
Après il y aurait apparemment un logiciel pour signer dans le kit de fail0verflow mais pas sur du tout car les outils de fail0verflow sont uniquement accès pour modifier des PUP et notamment compiler de PKG pour les PUP qui sont différents des PKG que nous avons l'habitude d'utiliser (MAJ des jeux, homebrew, jeux PSN...).
Sisi avec un manager de backup signé comme dit dans mon précédent post reli le mieux ^^", maintenant il faut le trouver sur net, si c'est pas encore dispo cela ne serait tarder car cela irai de paire avec se CFW. Mais tu perd beaucoup de chose aussi (li mon précédent post) à toi de voir si cela en vaut vraiment la chandelle pour toi.
A ba comme le dit mon collègue du dessus cela a été corrigé avec la version 1.2 de se CFW mais vous été bien sur que maintenant toutes ces options sont bien présente ? Non PS3Tool c'est pour signer les .pkg des mises à jours (PUP) qui sont différents des .pkg des homebrew, pour signer un .pkg il faut des bases en programmation et cela n'est pour le moment pas possible au commun des mortels look le binse legendkil ^^":
// SCEkrit.c (v1.0): Compute Sony's Private Keys
// Based on Sven's sceverify.c
// -------------------------------------------------------------
// Compile by copying to fail0verflow's ps3tools and add
// SCEkrit.c to TOOLS in the Makefile.
// Depends on libgmp; add -lgmp to LDFLAGS
// - Aaron Lindsay / @AerialX
// And thanks gbcft!
// Copyright 2010 Sven Peter <svenpeter@gmail.com>
// Licensed under the terms of the GNU GPL, version 2
// http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
#include "tools.h"
#include "types.h"
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <stdlib.h>
#include <gmp.h>
static int keyid = -1;
static u8 *ptr1 = NULL;
static u8 *ptr2 = NULL;
static u16 type;
typedef struct {
u16 flags;
u32 meta_offset;
u64 info_offset;
u32 app_type;
u64 filesize;
u64 header_len;
} fileinfo;
static fileinfo info1;
static fileinfo info2;
static struct keylist *klist = NULL;
static struct keylist *self_load_keys(fileinfo* info)
{
enum sce_key id;
switch (info->app_type) {
case 1:
id = KEY_LV0;
break;
case 2:
id = KEY_LV1;
break;
case 3:
id = KEY_LV2;
break;
case 4:
id = KEY_APP;
break;
case 5:
id = KEY_ISO;
break;
case 6:
id = KEY_LDR;
break;
default:
fail("invalid type: %08x", info->app_type);
}
return keys_get(id);
}
static void read_self_header(u8* ptr, fileinfo* info)
{
info->flags = be16(ptr + 0x08);
info->meta_offset = be32(ptr + 0x0c);
info->header_len = be64(ptr + 0x10);
info->filesize = be64(ptr + 0x18);
info->info_offset = be64(ptr + 0x28);
info->app_type = be32(ptr + info->info_offset + 0x0c);
klist = self_load_keys(info);
}
static void read_pkg_header(u8* ptr, fileinfo* info)
{
info->flags = be16(ptr + 0x08);
info->meta_offset = be32(ptr + 0x0c);
info->header_len = be64(ptr + 0x10);
info->filesize = be64(ptr + 0x18);
klist = keys_get(KEY_PKG);
}
static void decrypt(u8* ptr)
{
if (keyid < 0)
keyid = sce_decrypt_header(ptr, klist);
else if (keyid != sce_decrypt_header(ptr, klist))
fail("Both files must have the same key id");
if (keyid < 0)
fail("sce_decrypt_header failed");
if (sce_decrypt_data(ptr) < 0)
fail("sce_decrypt_data failed");
if (klist->keys[keyid].pub_avail < 0)
fail("no public key available");
if (ecdsa_set_curve(klist->keys[keyid].ctype) < 0)
fail("ecdsa_set_curve failed");
ecdsa_set_pub(klist->keys[keyid].pub);
}
static void verify_signature(u8* ptr, fileinfo* info, u8* hash, u8** s, u8** r)
{
u64 sig_len;
sig_len = be64(ptr + info->meta_offset + 0x60);
*r = ptr + sig_len;
*s = *r + 21;
sha1(ptr, sig_len, hash);
printf("Signature\n");
if (ecdsa_verify(hash, *r, *s))
printf(" Status: OK\n");
else
printf(" Status: FAIL\n");
}
static void load_num(mpz_t n, u8* un)
{
char buffer[0x100];
char* ptr = buffer;
int i;
for (i = 0; i < 21; i++) {
sprintf(ptr, "%02x", un[i]);
ptr += 2;
}
mpz_set_str(n, buffer, 16);
}
static char* calculate_private_key(u8* us1, u8* us2, u8* uz1, u8* uz2, u8* un, u8* ur)
{
mpz_t s1, s2, z1, z2, n, r, k, dA;
mpz_inits(s1, s2, z1, z2, n, r, k, dA, NULL);
load_num(s1, us1); load_num(s2, us2); load_num(z1, uz1); load_num(z2, uz2); load_num(n, un); load_num(r, ur);
mpz_sub(z2, z1, z2);
mpz_sub(s2, s1, s2);
mpz_invert(s2, s2, n);
mpz_mul(k, z2, s2);
mpz_mod(k, k, n);
mpz_mul(s2, s1, k);
mpz_sub(s2, s2, z1);
mpz_invert(r, r, n);
mpz_mul(dA, s2, r);
mpz_mod(dA, dA, n);
// printf("k: %s\n", mpz_get_str(NULL, 16, k));
return mpz_get_str(NULL, 16, dA);
}
int main(int argc, char *argv[])
{
if (argc != 3)
fail("usage: scesekrit filename1 filename2");
ptr1 = mmap_file(argv[1]);
ptr2 = mmap_file(argv[2]);
type = be16(ptr1 + 0x0a);
if (type != be16(ptr2 + 0x0a))
fail("Files must be the same type");
if (type == 1) {
read_self_header(ptr1, &info1);
} else if(type == 3) {
read_pkg_header(ptr1, &info1);
} else
fail("Unknown type: %d", type);
if ((info1.flags) & 0x8000)
fail("devkit file; nothing to verify");
if (klist == NULL)
fail("no key found");
decrypt(ptr1);
if (type == 1) {
read_self_header(ptr2, &info2);
} else if(type == 3) {
read_pkg_header(ptr2, &info2);
} else
fail("Unknown type: %d", type);
if ((info2.flags) & 0x8000)
fail("devkit file; nothing to verify");
if (klist == NULL)
fail("no key found");
decrypt(ptr2);
u8* s1;
u8* s2;
u8 z1[21];
u8 z2[21];
u8* r1;
u8* r2;
u8 ec[21];
u8 n[21];
z1[0] = 0;
z2[0] = 0;
ecdsa_get_params(klist->keys[keyid].ctype, ec, ec, ec, n, ec, ec);
printf("%s ", argv[1]);
verify_signature(ptr1, &info1, z1 + 1, &s1, &r1);
printf("%s ", argv[2]);
verify_signature(ptr2, &info2, z2 + 1, &s2, &r2);
if (memcmp(r1, r2, 21))
fail("Both files must share the same r signature value.");
const char* dA = calculate_private_key(s1, s2, z1, z2, n, r1);
int len = strlen(dA);
int i;
printf("Private Key: ");
for (i = len / 2; i < 21; i++)
printf("00");
printf("%s\n", dA);
return 0;
}
Donc pour l'instant il n'y a même pas de logiciel pour ceci c'est juste cette feuille de route (dira t'on) pour programmer la signature via lunix.
A oui effectivement remi06 j'ai pas pensé à ces foutus syscall, donc oui il faudrai aussi une modif sur le firmware au niveau des syscall, une version 1.3 peut être.
Tu as l'air d'avoir de l'expérience sur les choses moches de la vie. Ha, le miroir...
Je ne vois pas en quoi ma réponse est "cassante". Il dit des bêtises, je rectifie. Si tu préfères dire que la PS3 est un gruyère, libre à toi, comme libre à moi de te répondre car on est sur un forum. Tu sais le truc qui est public...
Il y a trop de branleurs qui ne savent pas de quoi ils parlent sur ce forum
Me font toujours rire les gens qui lancent une pique et demandent à l'autre de ne pas répondre...
Bref oui tu paie une taxe quand tu achète des CD/DVD vierges.
Toujours un guignol pour reprendre la phrase précédente et espérer casser quelqu'un pour acquérir un semblant de réussite dans son petit quotidien jamais ennuyant.
La vie, c'est moche, hein...
(Merci de ne pas répondre, c'est mon dernier message te concernant. Si tu souhaites te lancer dans un "qui qu'à la plus grosse", envoi en MP, mais pas ici, merci.)
Une taxe ? Dans quelque chose de "privé" ? Dur.
Et moi je ne peux m'empecher de rire devant une telle phrase.
La PS3 est tout sauf un gruyère. Quand tu as les root keys, tu peux tout faire tout simplement.